package Persistencia;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;

import Negocio.Libro;




public class Conexion {

	Connection conectar;
	Statement sql;
	private ArrayList<Libro> listaLIbros;


	/**
	 * 
	 */

	public Conexion() {

		
	}

	/**
	 * Metodo que establece 
	 */
	private void establecerConexion(){

		try {


			DriverManager.registerDriver(new com.mysql.jdbc.Driver());
			//Class.forName(new com.mysql.jdcb.Driver);
			conectar=DriverManager.getConnection("jdbc:mysql://localhost:3306/libros", "root","123456");
			sql= conectar.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
			System.out.println("se conecto a la base de datos");
		} catch (SQLException e) {
			System.out.println("no se pudo conectar");
			///e.printStackTrace();
		}

	}

	private void cerrarConexion() {
		// TODO Auto-generated method stub
		try {
			sql.close();
			conectar.close();
			System.out.println("la conexion se cerro exitosamente");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			System.out.println("la conexion no pudo ser cerrada");
			e.printStackTrace();
		}
	}


	public void cargarLibro() {
		establecerConexion();
		listaLIbros= new ArrayList<Libro>();
		try {
			System.out.println("se ha creado objeto sql");
			ResultSet consulta= sql.executeQuery("SELECT * FROM " +
					"libros;" );

			System.out.println("Se realizo la consulta");


			while (consulta.next()) {


				String id=consulta.getString("id");
				String nombre=consulta.getString("nombre");
				String descripcion=consulta.getString("descripcion");



				listaLIbros.add(new Libro(id, nombre, descripcion));


			}
			consulta.close();
			cerrarConexion();


		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		for (int i = 0; i < listaLIbros.size(); i++) {
			System.out.println(listaLIbros.get(i).getId()+" "+listaLIbros.get(i).getNombre()+
					" "+listaLIbros.get(i).getDescripcion());

		}

	}

	public void consultarPorDato(String dato){
		establecerConexion();
		listaLIbros= new ArrayList<Libro>();
		try {
			System.out.println("se ha creado objeto sql");
			ResultSet consulta= sql.executeQuery("SELECT * FROM " +
					"libros where nombre LIKE\"%"+dato+"%\";" );

			System.out.println("Se realizo la consulta buscar por nombre"+ dato);
			
			while (consulta.next()) {
				System.out.println(consulta.getString("nombre"));

				String id=consulta.getString("id");
				String nombre=consulta.getString("nombre");
				String descripcion=consulta.getString("descripcion");

				listaLIbros.add(new Libro(id, nombre, descripcion));
				
				

			}
			for (int j = 0; j < listaLIbros.size(); j++) {
				
				System.out.println(listaLIbros.get(j).getId());
			}
			consulta.close();
			cerrarConexion();

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		

	}
	/**
	 * 
	 */
	public void hacerConsultaPelicula() {
		establecerConexion();
		try {
			System.out.println("se ha creado objeto sql");
			ResultSet consulta= sql.executeQuery("SELECT * FROM " +
					"persona ");

			System.out.println("Se realizo la consulta");





			System.out.println("///////////////////////");
			while (consulta.next()) {

				int idPersona=consulta.getInt("idpersona");
				String nombrePersona=consulta.getString("nombre");
				String telefono=consulta.getString("telefono");
				String correo=consulta.getString("correo");
				int documento=consulta.getInt("documento");
				String direccion=consulta.getString("direccion");





			}
			consulta.close();
			cerrarConexion();

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}


	}

	/**
	 * 
	 */





	public void insertarLibro(String id, String nombre, String descripcion) {

		establecerConexion();
		try {
			String dato = "INSERT INTO libros VALUES ('"+id+"',"+"'"+nombre+"'," +"'"+descripcion+"');";                                               

			this.sql.execute(dato);
		} catch (SQLException e) {

			System.out.println("no se realizo la ingreso de datos");
		}  
	}


	public static void main(String[] args) {

		Conexion conexion = new Conexion();
		//conexion.establecerConexion();
		conexion.cargarLibro();
		//conexion.insertarLibro("202", "La odisea","Homero");
		conexion.consultarPorDato("odisea");

	}

	public ArrayList<Libro> getListaLIbros() {
		return listaLIbros;
	}

	public void setListaLIbros(ArrayList<Libro> listaLIbros) {
		this.listaLIbros = listaLIbros;
	}



}
